﻿/**
* File: IXmglxmxxService.cs
* Author: 汪杰
* Create Time:2025/2/21 13:53:00
* Email:15200358008@139.com
* 代码由TMCodeGenerator自动生成
**/
using JSLCloud.App.Models.Xmglxmxx;
using JSLCloud.Models;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace JSLCloud.App.Mes.Service
{
    /// <summary>
    /// Xmglxmxx Interface
    /// </summary>
    public interface IXmglxmxxService 
    {
        /// <summary>
        /// 查询Xmglxmxx数据
        /// </summary>
        /// <param name="requestObject">响应结果对象</param>
        /// <returns></returns>
        Task<ResponseObject<List<XmglxmxxQueryModel>>> GetAsync(RequestGet requestObject);

        /// <summary>
        /// 获取当前项目的证书ID
        /// </summary>
        /// <param name="requestObject"></param>
        /// <returns></returns>
        Task<ResponseObject<dynamic>> GetCertificateAsync(RequestGet requestObject);

        /// <summary>
        /// 查询Xmglxmxx数据
        /// </summary>
        /// <param name="requestObject">响应结果对象</param>
        /// <returns></returns>
        Task<ResponseObject<List<XmglxmxxQueryModel>>> GetSchedulingAsync(RequestGet requestObject);

        /// <summary>
        /// 新增Xmglxmxx数据
        /// </summary>
        /// <param name="requestObject">响应结果对象</param>
        /// <param name="user"></param>
        /// <returns></returns>
        Task<ResponseObject<bool>> PostAsync(RequestPost<XmglxmxxAddModel> requestObject,CurrentUser user);

        /// <summary>
        /// 新增Xmglxmxx数据
        /// </summary>
        /// <param name="requestObject">响应结果对象</param>
        /// <param name="user"></param>
        /// <returns></returns>
        Task<ResponseObject<bool>> CreateAsync(RequestPost<XmglxmxxCreateModel> requestObject, CurrentUser user);

        /// <summary>
        /// 修改Xmglxmxx数据
        /// </summary>
        /// <param name="requestObject">响应结果对象</param>
        /// <returns></returns>
        Task<ResponseObject<bool>> PutAsync(RequestPut<XmglxmxxEditModel> requestObject);

        /// <summary>
        /// 修改Xmglxmxx数据
        /// </summary>
        /// <param name="requestObject">响应结果对象</param>
        /// <returns></returns>
        Task<ResponseObject<bool>> UpdateCertificateAsync(RequestPut<XmglxmxxDoneModel> requestObject,CurrentUser user);

        /// <summary>
        /// 审核Xmglxmxx数据
        /// </summary>
        /// <param name="requestObject">响应结果对象</param>
        /// <param name="user"></param>
        /// <returns></returns>
        Task<ResponseObject<bool>> AuditAsync(RequestPut<XmglxmxxAuditModel> requestObject,CurrentUser user);

        /// <summary>
        /// 排程审核Xmglxmxx数据
        /// </summary>
        /// <param name="requestObject">响应结果对象</param>
        /// <returns></returns>
        Task<ResponseObject<bool>> SchedulingAuditAsync(RequestPut<XmglxmxxAuditModel> requestObject);

        /// <summary>
        /// 排程审核Xmglxmxx数据
        /// </summary>
        /// <param name="requestObject">响应结果对象</param>
        /// <returns></returns>
        Task<ResponseObject<bool>> SchedulingAuditCancelAsync(RequestPut<XmglxmxxAuditModel> requestObject);

        /// <summary>
        /// 审核Xmglxmxx数据
        /// </summary>
        /// <param name="requestObject">响应结果对象</param>
        /// <returns></returns>
        Task<ResponseObject<bool>> ReceiveConfirmAsync(RequestPut<XmglxmxxAuditModel> requestObject);

        /// <summary>
        /// 审核Xmglxmxx数据
        /// </summary>
        /// <param name="requestObject">响应结果对象</param>
        /// <returns></returns>
        Task<ResponseObject<bool>> DoneConfirmAsync(RequestPut<XmglxmxxDoneModel> requestObject,CurrentUser user);

        /// <summary>
        /// 审核Xmglxmxx数据
        /// </summary>
        /// <param name="requestObject">响应结果对象</param>
        /// <returns></returns>
        Task<ResponseObject<bool>> InvoiceConfirmAsync(RequestPut<XmglxmxxAuditModel> requestObject);

        /// <summary>
        /// 删除Xmglxmxx数据
        /// </summary>
        /// <param name="requestObject">响应结果对象</param>
        /// <returns></returns>
        Task<ResponseObject<bool>> DeleteAsync(RequestDelete<DeleteModel> requestObject);
        
    }
}